package org.dromara.xxmj.service;

import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.xxmj.domain.CourseOrder;
import org.dromara.xxmj.domain.dto.CourseOrderDto;
import org.dromara.xxmj.domain.vo.CourseOrderVo;

import java.util.List;

/**
 * 课程订单服务接口
 *
 * @author Vincent
 */
public interface ICourseOrderService {

    /**
     * 创建课程订单
     *
     * @param dto 订单信息
     * @return 订单ID
     */
    Long createOrder(CourseOrderDto dto);

    /**
     * 获取订单详情
     *
     * @param id 订单ID
     * @return 订单详情
     */
    CourseOrder getOrderById(Long id);

    /**
     * 支付订单
     *
     * @param id 订单ID
     * @param payType 支付方式
     * @return 是否成功
     */
    Boolean payOrder(Long id, String payType);

    /**
     * 取消订单
     *
     * @param id 订单ID
     * @return 是否成功
     */
    Boolean cancelOrder(Long id);

    /**
     * 获取课程销量
     *
     * @param courseId 课程ID
     * @return 销量
     */
    Integer getCourseOrderCount(Long courseId);

    List<CourseOrderVo> listOrders(PageQuery pageQuery);
}
